﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>报错 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 报错 statement signals the occurrence of an error. This signal can be caught by a try-catch statement." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>报错</h1>

<p>发生错误时发出信号. 此信号可以被 <a href="Try.htm">try</a>-<a href="Catch.htm">捕获</a> 语句捕获.</p>

<pre class="Syntax"><span class="func">报错</span> <span class="optional">Expression</span></pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Expression</dt>
  <dd><p>要保存到 <a href="Catch.htm">捕获</a> 的 OutputVar 中的值.</p>
      <p>由于此参数为<a href="../Variables.htm#Expressions">表达式</a>, 所以下面所有的例子都是有效的:</p>
<pre>报错 3
报错 &quot;literal 字符串&quot;
报错 MyVar
报错 i + 1
报错 { what: &quot;Custom error&quot;, file: 内_此文件路径, line: 内_当前行号 } <em>; 抛出一个<a href="../objects/Object.htm">对象</a></em></pre>
<p>如果省略, 则抛出带默认消息的 <a href="#Exception">异常 对象</a>.</p>
<p>如果表达式被括在括号中, 则 <code>报错</code> 后的空格或制表符是可选的 , 如 <code>报错(异常("Error"))</code> 所示.</p></dd>

</dl>

<h2 id="Exception">异常()</h2>
<p>创建一个对象, 其属性与<a href="Catch.htm#RuntimeErrors">运行时错误</a>创建的异常的属性是通用的.</p>
<pre class="Syntax"><span class="func">异常</span>(Message <span class="optional">, What, Extra</span>)</pre>
<p>此对象包含以下属性:</p>
<ul>
  <li><strong>Message:</strong> 错误消息.</li>
  <li><strong>What:</strong> 引起异常的原因. 这通常是一个函数的名称, 但对于由表达式中的错误而抛出的异常(例如在非数字值上使用数学运算符), 则为空白.</li>
  <li><strong>Extra:</strong> 如果找到, 错误的额外信息.</li>
  <li><strong>File:</strong> 自动设置为包含发生错误的语句的脚本文件的完整路径.</li>
  <li><strong>Line:</strong> 自动设置为发生错误的语句行号.</li>
</ul>
<p>如果省略 <em>What</em>, 则它默认为当前函数的名称. 否则它可以是字符串或调用堆栈顶部的负偏移量. 例如, 值 -1 设置 <code>异常.What</code> 为当前函数或子线程, 并设置 <code>异常.Line</code> 和 <code>异常.File</code> 为调用它的行号和文件. 但是, 如果这个脚本已经被<a href="../Scripts.htm#ahk2exe">编译</a>或者偏移是无效的, <em>What</em> 将转换为一个字符串.</p>
<p>如果由于脚本中的错误而自动抛出异常, 则 <em>What</em> 通常为空.</p>
<p><em>Message</em> 和 <em>Extra</em> 被转换为字符串. 如果一个异常抛出而且没有被获取, 它们将在错误日志中显示.</p>
<pre>try
    SomeFunction()
捕获 e
    信息框("Error in " e.What ", which was called at line " e.Line)

SomeFunction() {
    报错 异常("Fail", -1)
}</pre>

<h2 id="Related">相关</h2>
<p><a href="Try.htm">Try</a>, <a href="Catch.htm">捕获</a>, <a href="Finally.htm">收尾</a>, <a href="OnError.htm">在报错时</a></p>

<h2 id="Examples">示例</h2>
<p>请参阅 <a href="Try.htm#Examples">Try</a>.</p>

</body>
</html>